package com.haixiaoke.saas.messageCenter.mapper;

import com.haixiaoke.saas.messageCenter.domain.OrdinaryMessageUser;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 普通消息推送与用户关联数据Mapper接口
 *
 * @author panda
 * @date 2024-11-08
 */
public interface OrdinaryMessageUserMapper {
    /**
     * 查询普通消息推送与用户关联数据
     *
     * @param ordinaryMessageId 普通消息推送与用户关联数据主键
     * @return 普通消息推送与用户关联数据
     */
    List<OrdinaryMessageUser> selectOrdinaryMessageUserByOrdinaryMessageId(Long ordinaryMessageId);

    /**
     * 查询普通消息推送与用户关联数据列表
     *
     * @param ordinaryMessageUser 普通消息推送与用户关联数据
     * @return 普通消息推送与用户关联数据集合
     */
    List<OrdinaryMessageUser> selectOrdinaryMessageUserList(OrdinaryMessageUser ordinaryMessageUser);

    /**
     * 新增普通消息推送与用户关联数据
     *
     * @param ordinaryMessageUser 普通消息推送与用户关联数据
     * @return 结果
     */
    int insertOrdinaryMessageUser(OrdinaryMessageUser ordinaryMessageUser);

    /**
     * 修改普通消息推送与用户关联数据
     *
     * @param ordinaryMessageUser 普通消息推送与用户关联数据
     * @return 结果
     */
    int updateOrdinaryMessageUser(OrdinaryMessageUser ordinaryMessageUser);

    /**
     * 删除普通消息推送与用户关联数据
     *
     * @param ordinaryMessageId 普通消息推送与用户关联数据主键
     * @return 结果
     */
    int deleteOrdinaryMessageUserByOrdinaryMessageId(Long ordinaryMessageId);

    /**
     * 批量删除普通消息推送与用户关联数据
     *
     * @param ordinaryMessageIds 需要删除的数据主键集合
     * @return 结果
     */
    int deleteOrdinaryMessageUserByOrdinaryMessageIds(Long[] ordinaryMessageIds);

    /**
     * 批量新增普通消息推送与用户关联数据
     * @param ordinaryMessageUserList
     * @return
     */
    int insertBatchOrdinaryMessageUser(List<OrdinaryMessageUser> ordinaryMessageUserList);

    /**
     * 根据工单状态和用户类型查询普通消息推送与用户关联数据列表
     * @param workOrderState  工单状态
     * @param userType        用户类型:true-B端用户,false-C端用户
     * @param timeoutFlag     是否超时:true-超时,false-未超时
     * @return
     */
    List<OrdinaryMessageUser> selectOrdinaryMessageUserListByWorkOrder(@Param("workOrderState") String workOrderState,
                                                                       @Param("userType") boolean userType,
                                                                       @Param("timeoutFlag") boolean timeoutFlag);

    /**
     * 根据订单状态和用户类型查询普通消息推送与用户关联数据列表
     * @param orderState  订单状态
     * @param userType    用户类型:true-B端用户,false-C端用户
     * @return
     */
    List<OrdinaryMessageUser> selectOrdinaryMessageUserListByOrder(@Param("orderState") String orderState, @Param("userType") boolean userType);

    /**
     * 查询B端用户信息
     * 根据租客合同状态和用户类型查询普通消息推送与用户关联数据列表
     * @param lesseeContractStatus 租客合同状态
     * @return
     */
    List<OrdinaryMessageUser> selectListByBusUserLesseeContract(String lesseeContractStatus);

    /**
     * 查询B端用户信息
     * 根据租客合同状态和用户类型查询普通消息推送与用户关联数据列表
     * @param lesseeContractStatus 租客合同状态
     * @return
     */
    List<OrdinaryMessageUser> selectListByConUserLesseeContract(String lesseeContractStatus);
}
